package com.star.rpc.protocol;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * packageName com.star.rpc.protocol
 *
 * @author zerostart
 * @className ProtocolMessage
 * @date 2024/11/27
 * @description
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {

    /**
     * 消息头
     */
    private Header header;


    private T body;


    /**
     * 协议消息头
     */
    @Data
    public static class Header {

        /**
         * 魔数
         */
        private byte magic;

        /**
         * 版本
         */
        private byte version;

        /**
         * 序列化器
         */

        private byte serializer;

        /**
         * 类型
         */
        private byte type;

        /**
         * 状态
         */

        private byte status;

        /**
         *  请求id
         */

        private long requestId;

        /**
         * 消息体长度
         */
        private int bodyLength;

    }

}
